package com.javacoo.event.client.api;

import com.javacoo.event.client.config.EventConfig;
import com.javacoo.xkernel.spi.Spi;

/**
 * 事件帮助类接口
 * <li></li>
 *
 * @author: duanyong@jccfc.com
 * @since: 2021/10/15 11:16
 */
@Spi(EventConfig.DEFAULT_IMPL)
public interface EventHelper {
    /**
     * 发布同步事件
     * <li></li>
     * @author duanyong@jccfc.com
     * @date 2021/10/15 11:18
     * @param eventObject: 事件对象
     * @return: void
     */
    void post(Object eventObject);
    /**
     * 发布异步事件
     * <li></li>
     * @author duanyong@jccfc.com
     * @date 2021/10/15 11:19
     * @param eventObject:事件对象
     * @return: void
     */
    void postAsync(Object eventObject);
    /**
     * 发布延迟事件
     * <li></li>
     * @author duanyong@jccfc.com
     * @date 2021/10/15 11:20
     * @param eventObject: 事件对象
     * @param delayTime: 延迟时间,单位:毫秒
     * @return: void
     */
    void postDelay(Object eventObject, long delayTime);

    /**
     * 注册监听对象
     * <p>说明:</p>
     * <li></li>
     * @param listenerObject: 监听对象
     * @author duanyong@jccfc.com
     * @date 2021/10/15 18:01
     */
    void register(Object listenerObject);
    /**
     * 注销监听对象
     * <p>说明:</p>
     * <li></li>
     * @param listenerObject: 监听对象
     * @author duanyong@jccfc.com
     * @date 2021/10/15 18:02
     */
    void unRegister(Object listenerObject);
}
